![アジア(Tokyo)に最適なAuth0リージョンを探してみる](https://devio2023-media.developers.io/wp-content/uploads/2020/10/33cdff8942d2abb763720742090433fb.png)
アジア(Tokyo)に最適なAuth0リージョンを探してみる
現在,Auth0のパブリックリージョンは、アメリカ、ヨーロッパ、オーストラリアの3つから選択できます。
東京にあるデータセンターからAuth0にアクセスする場合、どのリージョンを選べばいいのか、ログインにかかる時間をもとに考えていきたいと思います。
ちなみに、Auth0のコミュニティでは地理的に近いオーストラリアを推奨していました。
やってみる
環境
New RelicのSynthetics(Tokyoを使用)を使って計測してみます。
計測は、Auth0のAuthentication APIの以下のエンドポイントを使用します。
- Get Token(POST /oauth/token)
- User Profile(GET /userinfo)
トークンを取得し、ログインユーザーの情報を取得するスクリプトをSyntheticsで取得し、可視化してみます。
Tokenの取得には、Resource Owner Password形式を使ってみました。
Auth0
- Application TypeにSingle Page Applicationを設定したApplicationを作成します
- ApplicationのAdvanced SettingsのGrant TypesでPasswordを加えます。
- ログインユーザーを登録します(コネクションはUsername-Password-Authenticationにしました)
これらをリージョンごとに分けた3つのテナントで行います。
New Relic
- synthetics monitorを作成します
- monitor type には
API Test
を選択 - monitoring locations には
Tokyo, JP
を選択 - schedule は 1min を選択 (間隔が短いほど料金がかかるので注意しましょう)
- monitor type には
続いてスクリプトを作成します。
- Get Token(POST /oauth/token)
- User Profile(GET /userinfo)
トークンを取得し、それを使ってUser Profileを取得するスクリプトを用意します。
上記ドキュメントを参考にして作成してみます。
作成が終わったら、Script your steps
のテキストボックスに貼り付け、Validate
ボタンを押して実行の確認をします。
動作確認が取れたらCreate Monitor
を押して登録完了です。
スケジュールに設定した間隔でAPI Testが実行され続けます。
アメリカ、ヨーロッパ、オーストラリアへのエンドポイントごとにmonitorを作成しましょう。
可視化
synthetics monitorのサマリー画面を見ると、Load Timeなどの情報を確認することができます。
Results
やResources
の画面では、より詳細な情報が確認できるので色々と見て回ってみましょう。
- Synthetics Results: Access individual monitor runs | New Relic Documentation
- Synthetics Resources: Understand load times | New Relic Documentation
例えば、Results
の Network timings
を比較してみると、リージョンごとに差があることが見てとれました。
Insightsを使って3つのリージョンへの実行時間をグラフにする
New RelicのInsightsというサービスで、New RelicにためられたデータをNRQLという言語でクエリして情報を取得することができます。
3つのリージョンへの実行時間をグラフ化してみます。
クエリ例:
SyntheticCheck
: 特定のモニターの1回の実行からメトリックを返します。これらのメトリックには、モニターの期間情報、モニターチェックの場所、要求と応答のヘッダーのサイズ、モニターのタイプ、およびタイムスタンプが含まれます
- 特定の時間から、5分毎のduration(応答時間)平均をモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT average(duration) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1601523900
- 特定の時間から、5分毎のdurationの50パーセンタイルをモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT percentile(duration,50) FROM SyntheticCheck FACET monitorName TIMESERIES 5 minute since 1601523900
- 特定の時間から、durationの最大、最小、平均,50パーセンタイルをモニターごと(アメリカ、ヨーロッパ、オーストラリア用)に表示するクエリです。
SELECT max(duration),min(duration),average(duration),percentile(duration,50) FROM SyntheticCheck FACET monitorName since 1601523900
まとめ
1分ごとに各リージョンのエンドポイントにアクセスし、24時間の平均実行時間を見た限りでは オーストラリアのリージョン が一番速いという結果になりました。
今回アクセスしたエンドポイントは2つですが、実行時間を基準に考えるなら東京からはオーストラリアのリージョンを選択するのがベターと言えそうです。
ただし、平均やパーセンタイルのグラフを見てみると、アメリカのリージョンは一番凹凸が少ないですね。 これは時間帯に限らず安定していると言っていいのかもしれません。 参考欄にも記載していますが、アメリカのリージョンはマルチリージョンの高可用性アーキテクチャが採用されています。 その他のリージョンに関しては情報を見つけることができませんでした。 確認が取れ次第追記しようと思っています。